package leetcode2;

import java.util.LinkedList;
import java.util.Queue;

class MyStack {

    Queue<Integer> q1;
    Queue<Integer> q2;

    /**
     思路：始终保存一个队列为空。
     出栈时：把不空的队列倒入空队列中，直到剩最后一个元素，就是需要出栈的
     入栈时：入不为空的队列。都空时可以约定进q1
     */

    public MyStack() {
        q1 = new LinkedList<>();
        q2 = new LinkedList<>();
    }

    public void push(int x) {
        if(q1.isEmpty() && q2.isEmpty()) {
            q1.offer(x);
            return;
        }
        if(q1.isEmpty()) {
            q2.offer(x);
        }else {
            q1.offer(x);
        }
    }

    public int pop() {
        if(q1.isEmpty() && q2.isEmpty()) {
            return -1;
        }
        if(q1.isEmpty()) {
            int size = q2.size()-1;
            for(int i=0;i<size;i++) {
                q1.offer(q2.poll());
            }
            return q2.poll();
        }else {
            int size = q1.size()-1;
            for(int i=0;i<size;i++) {
                q2.offer(q1.poll());
            }
            return q1.poll();
        }
    }

    public int top() {
        if(q1.isEmpty() && q2.isEmpty()) {
            return -1;
        }
        if(q1.isEmpty()) {
            int size = q2.size()-1;
            for(int i=0;i<size;i++) {
                q1.offer(q2.poll());
            }
            return q2.peek();
        }else {
            int size = q1.size()-1;
            for(int i=0;i<size;i++) {
                q2.offer(q1.poll());
            }
            return q1.peek();
        }
    }

    public boolean empty() {
        return q1.isEmpty() && q2.isEmpty();
    }
}
public class Day15 {





    //1.
   /* public ListNode deleteDuplicates(ListNode head) {
        ListNode newHead = new ListNode(-1,head);
        ListNode cur = newHead; //遍历head
        ListNode prev = newHead; //遍历新链表
        while(cur != null) {
            while(cur.next != null && cur.val == cur.next.val) {
                cur = cur.next;
            }
            //走到这里说明cur为最后一个节点或者cur后面的值不与cur重复
            if(prev.next == cur) { //相邻结点，说明中间没有重复的
                prev = cur;
            }else {
                prev.next = cur.next;
            }
            cur = cur.next;
        }
        return newHead.next;
    }*/
}
